using System;
using System.Web.UI.WebControls;
using EYDIngenieria.ERP.Aplicacion.Gestion;
using EYDIngenieria.ERP.Aplicacion.Mantenedores;
using EYDIngenieria.ERP.ObjetosDeNegocio.Dominio;

namespace EYDIngenieria.ERP.Gestion
{
    public partial class Gestion_IngresoOC : System.Web.UI.Page
    {
        private readonly GestionOrdenDeCompra gestionOrdenDeCompra = new GestionOrdenDeCompra();
        private readonly MantenedorEstadoOrdenDeCompra mantenedorEstadoOrdenDeCompra = new MantenedorEstadoOrdenDeCompra();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session.Keys.Count == 0)
                Response.Redirect("../Default.aspx");
            if (!IsPostBack)
            {
                CargarListaOrdenes();
            }
        }

        private void CargarListaOrdenes()
        {
            lbxOrdenes.Items.Clear();
            OrdenDeCompra[] ordenes =  gestionOrdenDeCompra.Listar(mantenedorEstadoOrdenDeCompra.Buscar("A")[0]);

            ListItem l;
            foreach(OrdenDeCompra oc in ordenes)
            {
                l = new ListItem(string.Format("{0} - {1} - {2}", oc.Id, oc.Proveedor.RazonSocial, oc.Fecha.ToString("dd-MM-yyyy")), oc.Id.ToString());
                lbxOrdenes.Items.Add(l);
            }
        }


        private void SeteaTotal(OrdenDeCompra oc)
        {
            double montoTotal = 0;
            foreach (DetalleOrdenDeCompra d in oc.Detalle)
            {
                montoTotal = montoTotal + d.ValorTotal;   
            }
            ((Label) gdvDetalleOC.FooterRow.FindControl("lblTotal")).Text = montoTotal.ToString();
        }



        protected void lbxOrdenes_SelectedIndexChanged(object sender, EventArgs e)
        {
            OrdenDeCompra oc = gestionOrdenDeCompra.Obtener(int.Parse(lbxOrdenes.SelectedValue));
            txbFecha.Text = oc.Fecha.ToShortDateString();
            txbNumeroOc.Text = oc.Id.ToString();
            txbProveedor.Text = oc.Proveedor.RazonSocial;
            txbMontoTotal.Text = oc.MontoTotal.ToString();
            txbCuentaCorriente.Text = oc.CuentaCorrientee.Descripcion;
            txbNumeroDeCheque.Text = oc.NumeroCheque.ToString();
            gdvDetalleOC.DataSource = oc.Detalle;
            gdvDetalleOC.DataBind();
            SeteaTotal(oc);
            Session["ORDENDECOMPRA"] = oc;
        }
        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            OrdenDeCompra oc = gestionOrdenDeCompra.Obtener(int.Parse(lbxOrdenes.SelectedValue));
            oc.NumeroCheque = int.Parse(txbNumeroDeCheque.Text);
            oc.EstadoOrdenDeCompra = mantenedorEstadoOrdenDeCompra.Buscar("P")[0];
            gestionOrdenDeCompra.Facturar(oc,int.Parse(txbNumeroFactura.Text));
            CargarListaOrdenes();
            gdvDetalleOC.DataSource = null;
            gdvDetalleOC.DataBind();
            txbNumeroFactura.Text = string.Empty;
        }
        protected void gdvDetalleOC_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

    }
}